import request from "@/utils/request";

const USER_BASE_URL = "/api/v1/merchant/information";

const HouseAPI = {
  /**
   * 分页查询
   */
  getHouseContactPage(data: HousePageQuery) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseContactPage`,
      method: "post",
      data,
    });
  },
  /**
   * 审批
   * @param data
   */
  updateHouseContactAudit(data: Approval) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseContactAudit`,
      method: "post",
      data,
    });
  },
  /**
   * 填写品类预算
   * @param data
   */
  houseDesignBudgetEdit(data: ConsumerHouseDesignBudgetForm) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseDesignBudgetEdit`,
      method: "post",
      data,
    });
  },
  /**
   * 填写设计关联
   * @param data
   */
  houseDesignLinkEdit(data: ConsumerHouseDesignLinkForm) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseDesignLinkEdit`,
      method: "post",
      data,
    });
  },
  /**
   * 填写设计方案
   * @param data
   */
  houseDesignSchemeEdit(data: Approval) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseDesignSchemeEdit
`,
      method: "post",
      data,
    });
  },
  /**
   * 填写组织施工
   * @param data
   */
  houseConstructionSchemeEdit(data: ConsumerHouseConstructionSchemeForm) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseConstructionSchemeEdit`,
      method: "post",
      data,
    });
  },
  /**
   * 填写施工关联
   * @param data
   */
  houseConstructionLinkEdit(data: ConsumerHouseConstructionLinkForm) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseConstructionLinkEdit`,
      method: "post",
      data,
    });
  },
  /**
   * 填写材料选购
   * @param data
   */
  houseConstructionMaterialBuyEdit(data: ConsumerHouseConstructionMaterialBuyForm) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseConstructionMaterialBuyEdit`,
      method: "post",
      data,
    });
  },
  /**
   * 填写材料进场
   * @param data
   */
  houseConstructionMaterialInstallEdit(data: ConsumerHouseConstructionMaterialInstallForm) {
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/houseConstructionMaterialInstallEdit`,
      method: "post",
      data,
    });
  },
  /**
   * 触发结束状态
   * @param data
   */
  triggerEndStatus(data: { houseId: number }) {
    console.log(data, "data");
    return request<any, HousePageVO>({
      url: `${USER_BASE_URL}/triggerEndStatus`,
      method: "post",
      data,
    });
  },
};

export default HouseAPI;

/**
 * 审批
 */
export interface Approval {
  id: string; // 主键 ID，必填
  status?: string; // 申请状态（0申请中 1成功 2失败），选填
  auditUserId?: string; // 审核用户 ID，选填
  auditDesc?: string; // 审核描述，选填
  userTypeEnum?: string; // 审核用户类型，选填
  updateBy?: string; // 更新者，选填
  updateTime?: string; // 更新时间，选填
}

/**
 * 分页查询对象
 */
export interface HousePageQuery extends PageQuery {
  stepInfoList: [];
  merchantUserId?: string; // 关联的商户 ID，选填
  ownName?: string; // 姓名，选填
  mobile?: string; // 联系方式，选填
  status?: number; // 通讯录状态(0初始值 1绑定成功 2绑定失败)
  userType: string; // 用户类型 设计建档23 施工建档25 材料选购22
}

export interface ViewUserVo {
  userId: number; // 用户 ID
  userTerminal: number; // 用户终端类型
  username: string; // 用户名
  nickname: string; // 昵称
  markId: string; // 标识 ID
  avatar: string; // 头像 URL
}

export interface HouseDesignLinkVO {
  id: number; // 主键ID
  houseId: number; // 房屋ID
  contactId: number; // 通讯录ID
  merchantUserId: number; // 设计师ID
  designerName: string; // 签约设计师姓名
  designerPhone: string; // 签约设计师电话
  companyId: number; // 装修公司ID
  decorationCompanyName: string; // 装修公司名称
  decorationAddress: string; // 装修公司地址
  contractAmount: number; // 合同金额
  paymentFile: string; // 付款凭证
  receiptFile: string; // 收款凭证
  contractFile: string; // 签约合同凭证
  status: 0 | 1 | 2 | 3; // 状态 0未填写 1已填写 2已同意 3已拒绝
  remark?: string; // 审核信息（可选）
  createTime: string; // 创建时间
  createBy: number; // 创建人ID
  updateTime: string; // 更新时间
  updateBy: number; // 修改人ID
}

export interface HouseDesignBudgetVO {
  id: number; // 主键ID
  houseId: number; // 房屋ID
  merchantUserId: number; // 设计师ID
  categoryId: number; // 品类ID
  status: 0 | 1 | 2 | 3; // 状态 0未填写 1已填写 2已同意 3已拒绝
  remark?: string; // 审核信息（可选）
  brandId: number; // 意向品牌ID
  brandName: string; // 意向品牌名称
  budgetAmount: number; // 预算金额
  useAmount: number; // 已使用金额
  amountJson: string; // 金额修改记录
  createTime: string; // 创建时间
  createBy: string; // 创建人ID
  updateTime: string; // 更新时间
  updateBy: string; // 修改人ID
}

export interface HouseDesignSchemeVO {
  id: number; // 主键ID
  houseId: number; // 房屋ID
  merchantUserId: number; // 设计师ID
  status: 0 | 1 | 2 | 3; // 状态 0未填写 1已填写 2已同意 3已拒绝
  remark?: string; // 审核信息（可选）
  layoutPlanFile: string; // 平面布局图
  constructionDrawingFile: string; // 施工图
  plumbingElectricalDrawingFile: string; // 水电图
  renderingsFile: string; // 效果图
  createTime: string; // 创建时间
  createBy: string; // 创建人ID
  updateTime: string; // 更新时间
  updateBy: string; // 修改人ID
}

export interface ConsumerHouseSmallVo {
  ownName: string; // 户主名称
  mobile: string; // 手机号码
  region: string; // 省市区
  regionCode: string; // 省市区编码
  neighborhood: string; // 小区名称
  houseNumber: string; // 门牌号
  size: string; // 面积
  houseDesignLinkVO?: HouseDesignLinkVO; // 设计师关联信息
  houseDesignBudgetVOList?: HouseDesignBudgetVO[]; // 设计预算数组
  houseDesignSchemeVO?: HouseDesignSchemeVO; // 设计方案信息
}

/** 分页对象 */
export interface HousePageVO {
  id: number; // 主键 ID
  houseId: number; // 房屋 ID
  consumerUser: ViewUserVo; // 用户信息
  userType?: string; // 用户类型（可选）
  type: 0 | 1 | 2 | 3; // 通讯录类型
  merchantUserId?: number; // 关联的商户 ID（可选）
  merchantUser?: ViewUserVo; // 关联商户信息（可选）
  name: string; // 姓名
  mobile: string; // 联系方式
  status: 0 | 1 | 2; // 状态(0初始值 1绑定成功 2绑定失败)
  createTime: string; // 创建时间
  createBy: number; // 创建人 ID
  updateTime: string; // 更新时间
  updateBy: number; // 修改人 ID
  house?: ConsumerHouseSmallVo; // 房屋信息（可选）
  remark?: string; // 备注（可选）
  companyId?: number; // 装修公司 ID（可选）
  decorationCompanyName?: string; // 装修公司名称（可选）
  decorationAddress?: string; // 装修公司地址（可选）
}

/**
 * 审批form
 */
export interface Approval {
  id: string; // 主键 ID，必填
  status?: string; // 申请状态（0申请中 1成功 2失败），选填
  auditUserId?: string; // 审核用户 ID，选填
  auditDesc?: string; // 审核描述，选填
  userTypeEnum?: string; // 审核用户类型，选填
  updateBy?: string; // 更新者，选填
  updateTime?: string; // 更新时间，选填
}

/**
 * 房屋设计方案表单对象
 */
export interface ConsumerHouseDesignSchemeForm {
  /** 设计方案id */
  id?: number;
  /** 房屋id */
  houseId: number;
  /** 设计师id */
  merchantUserId?: number;
  /** 状态 0未填写 1已填写 2已同意 3已拒绝 */
  status?: number;
  /** 审核信息 */
  remark?: string;
  /** 装修风格 */
  decorationStyle?: string;
  /** 平面布局图 */
  layoutPlanFile?: any;
  /** 施工图 */
  constructionDrawingFile?: any;
  /** 水电图 */
  plumbingElectricalDrawingFile?: any;
  /** 效果图 */
  renderingsFile?: any;
  /** 创建时间 */
  createTime?: string;
  /** 创建人ID */
  createBy?: string;
  /** 更新时间 */
  updateTime?: string;
  /** 修改人ID */
  updateBy?: string;
}

/**
 * 房屋设计关联表单对象
 */
export interface ConsumerHouseDesignLinkForm {
  /** 主键ID */
  id: number;
  /** 房屋ID */
  houseId: number;
  /** 设计师ID */
  merchantUserId: number;
  /** 签约设计师姓名 */
  designerName: string;
  /** 签约设计师电话 */
  designerPhone: string;
  /** 合同金额 */
  contractAmount: number;
  /*合同时间*/
  contractTime: string;

  /** 装修公司ID */
  companyId?: number;
  /** 装修公司名称 */
  decorationCompanyName?: string;
  /** 装修公司地址 */
  decorationAddress?: string;
  /** 付款凭证 */
  paymentFile?: any;
  /** 收款凭证 */
  receiptFile?: any;
  /** 签约合同凭证 */
  contractFile?: any;
  /** 状态 0未填写 1已填写 2已同意 3已拒绝 */
  status?: number;
  /** 审核信息 */
  remark?: string;
  /** 创建时间 */
  createTime?: string;
  /** 创建人ID */
  createBy?: number;
  /** 更新时间 */
  updateTime?: string;
  /** 修改人ID */
  updateBy?: number;
}

/**
 * 房屋设计品类预算表单对象
 */
export interface ConsumerHouseDesignBudgetForm {
  /** 房屋ID */
  houseId: number;
  /** 品类ID */
  categoryId: number;
  /** 意向品牌名称 */
  brandName: string;
  /** 预算金额 */
  budgetAmount: number;
  /** 已使用金额 */
  useAmount: number;

  /** 主键ID */
  id?: number;
  /** 设计师ID */
  merchantUserId?: number;
  /** 状态 0未填写 1已填写 2已同意 3已拒绝 */
  status?: number;
  /** 审核信息 */
  remark?: string;
  /** 意向品牌ID */
  brandId?: number;
  /** 金额修改记录（JSON字符串） */
  amountJson?: string;
  /** 创建时间 */
  createTime?: string;
  /** 创建人ID */
  createBy?: string;
  /** 更新时间 */
  updateTime?: string;
  /** 修改人ID */
  updateBy?: string;
}

/**
 * 隐蔽工程信息
 */
export type HiddenWork = {
  /** 工程类型 */
  type: string;
  /** 相关文件列表 */
  files: string[];
  /** 备注 */
  remark: string;
};

/**
 * 工人信息
 */
export type WorkInfo = {
  /** 工人姓名 */
  name: string;
  /** 工人联系方式 */
  mobile: string;
  /** 岗位 */
  job: string;
};

/**
 * 房屋施工方案表单对象
 */
export interface ConsumerHouseConstructionSchemeForm {
  /** 施工方案 ID */
  id?: number;
  /** 房屋 ID */
  houseId: number;
  /** 设计师/项目经理 ID */
  merchantUserId?: number;

  /**
   * 状态
   * 0 - 未填写
   * 1 - 已填写
   * 2 - 已同意
   * 3 - 已拒绝
   */
  status?: 0 | 1 | 2 | 3;

  /** 开工仪式照片文件路径 */
  constructionStartFile?: any;
  /** 施工组织方案文档文件路径 */
  constructionSchemeFile?: any;
  /** 施工时间进度表文件路径 */
  constructionPlanFile?: any;
  /** 开工日期（ISO 8601 格式） */
  constructionStartTime: string;
  /** 预计竣工日期（ISO 8601 格式） */
  constructionEndTime: string;
  /** 装修许可证文件路径 */
  constructionPermitFile?: any;

  /** 隐蔽工程信息列表 */
  hiddenWorks?: HiddenWork[];
  /** 工人信息列表 */
  workInfo?: WorkInfo[];

  /** 审核信息 */
  remark?: string;
  /** 创建时间（ISO 8601 格式） */
  createTime?: string;
  /** 创建人 ID */
  createBy?: number;
  /** 更新时间（ISO 8601 格式） */
  updateTime?: string;
  /** 修改人 ID */
  updateBy?: number;
}

/*施工关联*/
export interface ConsumerHouseConstructionLinkForm {
  remark?: string;
  /** 施工关联 ID */
  id?: any;
  /** 房屋 ID */
  houseId: number;
  /** 设计师/项目经理 ID */
  merchantUserId?: number;
  /** 设计师/项目经理姓名 */
  designerName?: string;
  /** 设计师/项目经理电话 */
  designerPhone?: string;
  /** 装修公司 ID */
  companyId?: number;
  /** 装修公司名称 */
  decorationCompanyName?: string;
  /** 装修公司地址 */
  decorationAddress?: string;
  /** 合同金额 */
  contractAmount: number;
  /** 付款凭证文件路径 */
  paymentFile?: any;
  /** 收款凭证文件路径 */
  receiptFile?: any;
  /** 签约合同凭证文件路径 */
  contractFile?: any;

  /**
   * 状态
   * 0 - 未填写
   * 1 - 已填写
   * 2 - 已同意
   */
  status: 0 | 1 | 2;

  /** 创建时间（ISO 8601 格式） */
  createTime?: string;
  /** 创建人 ID */
  createBy?: number;
  /** 更新时间（ISO 8601 格式） */
  updateTime?: string;
  /** 修改人 ID */
  updateBy?: number;
}

/**
 * 房屋施工材料选购表单对象
 */
export interface ConsumerHouseConstructionMaterialBuyForm {
  indexs?: number;
  /** 材料选购 ID */
  id: number;
  /** 房屋 ID */
  houseId: number;
  /** 设计师 ID */
  merchantUserId?: number;
  /** 品类 ID */
  categoryId?: number;

  /**
   * 状态
   * 0 - 未填写
   * 1 - 已填写
   * 2 - 已同意
   * 3 - 已拒绝
   */
  status?: 0 | 1 | 2 | 3;

  /** 供应商门店 */
  store?: string;
  /** 购买日期（ISO 8601 格式） */
  buyDate?: string;
  /** 公司 ID */
  companyId?: number;
  /** 公司名称 */
  companyName?: string;
  /** 意向品牌 ID */
  brandId?: number;
  /** 意向品牌名称 */
  brandName?: string;
  /** 金额 */
  amount: number;
  /** 合同时间 */
  contractTime: string;
  /** 合同文件路径 */
  contractFile?: string | [];
  /** 合同文件路径 */
  receiptFile?: string | [];
  /** 销售人员姓名 */
  salesman?: string;
  /** 销售人员电话 */
  salesmanMobile?: string;
  /** 付款凭证文件路径 */
  paymentFile?: string | [];

  /** 创建时间（ISO 8601 格式） */
  createTime?: string;
  /** 创建人 ID */
  createBy?: string;
  /** 更新时间（ISO 8601 格式） */
  updateTime?: string;
  /** 修改人 ID */
  updateBy?: string;
  /** 审核信息 */
  remark?: string;
}

/**
 * 房屋施工材料安装表单对象
 */
/**
 * 房屋施工材料安装表单对象
 */
export interface ConsumerHouseConstructionMaterialInstallForm {
  indexs: number;
  /** 主键 ID */
  id?: number;

  /** 房屋 ID */
  houseId: number;

  /** 设计师 ID */
  merchantUserId?: number;

  /** 品类 ID */
  categoryId?: number;

  /** 状态: 0 未填写, 1 已填写, 2 已同意 */
  status?: 0 | 1 | 2;

  /** 供应商门店 */
  store?: string;

  /** 购买日期 */
  buyDate?: string;

  /** 公司 ID */
  companyId?: number;

  /** 公司名称 */
  companyName?: string;

  /** 意向品牌 ID */
  brandId?: number;

  /** 意向品牌名称 */
  brandName?: string;

  /** 合同文件 */
  contractFile?: string | [];

  /** 付款凭证 */
  paymentFile?: string | [];

  /** 销售人员 */
  salesmanAfter?: string;

  /** 销售人员电话 */
  salesmanAfterMobile?: string;

  /** 安装人员 */
  installMan?: string;

  /** 安装人员电话 */
  installManMobile?: string;

  /** 创建时间 */
  createTime?: string;

  /** 创建人 ID */
  createBy?: string;

  /** 更新时间 */
  updateTime?: string;

  /** 修改人 ID */
  updateBy?: string;

  /** 授权信息 */
  remark?: string;

  /** 到货照片 */
  getFile?: string | [];

  /** 到货时间 */
  getTime?: string;

  /** 安装照片 */
  installFile?: string | [];

  /** 安装时间 */
  installTime?: string;
}
